網路對於任何人來講都非常的方便,只要有普通的網路,幾乎可以做任何事,掃描主機、注入封包、竊聽、遠端嘗試主機弱點等等,雖然這些功能都有大量的工具可辦到,可是如果在別人環境下,情況就變得不一樣了,沒有netcut,沒有wireshark之類的工具,也沒辦法裝,但你會發現,許多系統上都裝著python,唯一的機會來了
先介紹點python網路功能的基礎,python的優勢擁有許多第三方模組,在網路程式亦是如此,而主要核心都是socket模組,能夠快速拼湊出TCP與UDP的EchoServer和EchoClient
#TCP Client
import socket
target_host = "www.google.com"
target_port = 80
#建立socket物件
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#讓client連線
client.connect((target_host, target_port))
#傳送一些資料
client.send("GET / HTTP/1.1\r\nHost: google.com\r\n\r\n")
#接收一些資料
response = client.recv(4096)
print response
有些時候必須跟時間賽跑,能夠快速建立TCP client將非常方便,AF_INET代表將用一個IPv4位址或主機名稱,而SOCK_STREAM則代表這是個TCP client,最基礎的client結構
#udpClient
import socket
target_host = "127.0.0.1"
target_port = 80
#建立socket物件
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#傳送一些資料
client.sendto("AAABBBCC", (target_host, target_port))
#接收一些資料
data, addr = client.recvfrom(4096)
print data